lt(x, 0) → false
lt(0, s(y)) → true
lt(s(x), s(y)) → lt(x, y)
plus(x, 0) → x
plus(x, s(y)) → s(plus(x, y))
quot(x, s(y)) → help(x, s(y), 0)
help(x, s(y), c) → if(lt(c, x), x, s(y), c)
if(true, x, s(y), c) → s(help(x, s(y), plus(c, s(y))))
if(false, x, s(y), c) → 0
↳ QTRS
↳ Overlay + Local Confluence
lt(x, 0) → false
lt(0, s(y)) → true
lt(s(x), s(y)) → lt(x, y)
plus(x, 0) → x
plus(x, s(y)) → s(plus(x, y))
quot(x, s(y)) → help(x, s(y), 0)
help(x, s(y), c) → if(lt(c, x), x, s(y), c)
if(true, x, s(y), c) → s(help(x, s(y), plus(c, s(y))))
if(false, x, s(y), c) → 0
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
lt(x, 0) → false
lt(0, s(y)) → true
lt(s(x), s(y)) → lt(x, y)
plus(x, 0) → x
plus(x, s(y)) → s(plus(x, y))
quot(x, s(y)) → help(x, s(y), 0)
help(x, s(y), c) → if(lt(c, x), x, s(y), c)
if(true, x, s(y), c) → s(help(x, s(y), plus(c, s(y))))
if(false, x, s(y), c) → 0
lt(x0, 0)
lt(0, s(x0))
lt(s(x0), s(x1))
plus(x0, 0)
plus(x0, s(x1))
quot(x0, s(x1))
help(x0, s(x1), x2)
if(true, x0, s(x1), x2)
if(false, x0, s(x1), x2)
IF(true, x, s(y), c) → HELP(x, s(y), plus(c, s(y)))
LT(s(x), s(y)) → LT(x, y)
IF(true, x, s(y), c) → PLUS(c, s(y))
PLUS(x, s(y)) → PLUS(x, y)
HELP(x, s(y), c) → IF(lt(c, x), x, s(y), c)
HELP(x, s(y), c) → LT(c, x)
QUOT(x, s(y)) → HELP(x, s(y), 0)
lt(x, 0) → false
lt(0, s(y)) → true
lt(s(x), s(y)) → lt(x, y)
plus(x, 0) → x
plus(x, s(y)) → s(plus(x, y))
quot(x, s(y)) → help(x, s(y), 0)
help(x, s(y), c) → if(lt(c, x), x, s(y), c)
if(true, x, s(y), c) → s(help(x, s(y), plus(c, s(y))))
if(false, x, s(y), c) → 0
lt(x0, 0)
lt(0, s(x0))
lt(s(x0), s(x1))
plus(x0, 0)
plus(x0, s(x1))
quot(x0, s(x1))
help(x0, s(x1), x2)
if(true, x0, s(x1), x2)
if(false, x0, s(x1), x2)
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
IF(true, x, s(y), c) → HELP(x, s(y), plus(c, s(y)))
LT(s(x), s(y)) → LT(x, y)
IF(true, x, s(y), c) → PLUS(c, s(y))
PLUS(x, s(y)) → PLUS(x, y)
HELP(x, s(y), c) → IF(lt(c, x), x, s(y), c)
HELP(x, s(y), c) → LT(c, x)
QUOT(x, s(y)) → HELP(x, s(y), 0)
lt(x, 0) → false
lt(0, s(y)) → true
lt(s(x), s(y)) → lt(x, y)
plus(x, 0) → x
plus(x, s(y)) → s(plus(x, y))
quot(x, s(y)) → help(x, s(y), 0)
help(x, s(y), c) → if(lt(c, x), x, s(y), c)
if(true, x, s(y), c) → s(help(x, s(y), plus(c, s(y))))
if(false, x, s(y), c) → 0
lt(x0, 0)
lt(0, s(x0))
lt(s(x0), s(x1))
plus(x0, 0)
plus(x0, s(x1))
quot(x0, s(x1))
help(x0, s(x1), x2)
if(true, x0, s(x1), x2)
if(false, x0, s(x1), x2)
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QDP
PLUS(x, s(y)) → PLUS(x, y)
lt(x, 0) → false
lt(0, s(y)) → true
lt(s(x), s(y)) → lt(x, y)
plus(x, 0) → x
plus(x, s(y)) → s(plus(x, y))
quot(x, s(y)) → help(x, s(y), 0)
help(x, s(y), c) → if(lt(c, x), x, s(y), c)
if(true, x, s(y), c) → s(help(x, s(y), plus(c, s(y))))
if(false, x, s(y), c) → 0
lt(x0, 0)
lt(0, s(x0))
lt(s(x0), s(x1))
plus(x0, 0)
plus(x0, s(x1))
quot(x0, s(x1))
help(x0, s(x1), x2)
if(true, x0, s(x1), x2)
if(false, x0, s(x1), x2)
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ QDP
PLUS(x, s(y)) → PLUS(x, y)
lt(x0, 0)
lt(0, s(x0))
lt(s(x0), s(x1))
plus(x0, 0)
plus(x0, s(x1))
quot(x0, s(x1))
help(x0, s(x1), x2)
if(true, x0, s(x1), x2)
if(false, x0, s(x1), x2)
lt(x0, 0)
lt(0, s(x0))
lt(s(x0), s(x1))
plus(x0, 0)
plus(x0, s(x1))
quot(x0, s(x1))
help(x0, s(x1), x2)
if(true, x0, s(x1), x2)
if(false, x0, s(x1), x2)
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ QDPSizeChangeProof
↳ QDP
↳ QDP
PLUS(x, s(y)) → PLUS(x, y)
From the DPs we obtained the following set of size-change graphs:
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
LT(s(x), s(y)) → LT(x, y)
lt(x, 0) → false
lt(0, s(y)) → true
lt(s(x), s(y)) → lt(x, y)
plus(x, 0) → x
plus(x, s(y)) → s(plus(x, y))
quot(x, s(y)) → help(x, s(y), 0)
help(x, s(y), c) → if(lt(c, x), x, s(y), c)
if(true, x, s(y), c) → s(help(x, s(y), plus(c, s(y))))
if(false, x, s(y), c) → 0
lt(x0, 0)
lt(0, s(x0))
lt(s(x0), s(x1))
plus(x0, 0)
plus(x0, s(x1))
quot(x0, s(x1))
help(x0, s(x1), x2)
if(true, x0, s(x1), x2)
if(false, x0, s(x1), x2)
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
LT(s(x), s(y)) → LT(x, y)
lt(x0, 0)
lt(0, s(x0))
lt(s(x0), s(x1))
plus(x0, 0)
plus(x0, s(x1))
quot(x0, s(x1))
help(x0, s(x1), x2)
if(true, x0, s(x1), x2)
if(false, x0, s(x1), x2)
lt(x0, 0)
lt(0, s(x0))
lt(s(x0), s(x1))
plus(x0, 0)
plus(x0, s(x1))
quot(x0, s(x1))
help(x0, s(x1), x2)
if(true, x0, s(x1), x2)
if(false, x0, s(x1), x2)
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ QDPSizeChangeProof
↳ QDP
LT(s(x), s(y)) → LT(x, y)
From the DPs we obtained the following set of size-change graphs:
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
IF(true, x, s(y), c) → HELP(x, s(y), plus(c, s(y)))
HELP(x, s(y), c) → IF(lt(c, x), x, s(y), c)
lt(x, 0) → false
lt(0, s(y)) → true
lt(s(x), s(y)) → lt(x, y)
plus(x, 0) → x
plus(x, s(y)) → s(plus(x, y))
quot(x, s(y)) → help(x, s(y), 0)
help(x, s(y), c) → if(lt(c, x), x, s(y), c)
if(true, x, s(y), c) → s(help(x, s(y), plus(c, s(y))))
if(false, x, s(y), c) → 0
lt(x0, 0)
lt(0, s(x0))
lt(s(x0), s(x1))
plus(x0, 0)
plus(x0, s(x1))
quot(x0, s(x1))
help(x0, s(x1), x2)
if(true, x0, s(x1), x2)
if(false, x0, s(x1), x2)
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
IF(true, x, s(y), c) → HELP(x, s(y), plus(c, s(y)))
HELP(x, s(y), c) → IF(lt(c, x), x, s(y), c)
plus(x, s(y)) → s(plus(x, y))
plus(x, 0) → x
lt(x, 0) → false
lt(0, s(y)) → true
lt(s(x), s(y)) → lt(x, y)
lt(x0, 0)
lt(0, s(x0))
lt(s(x0), s(x1))
plus(x0, 0)
plus(x0, s(x1))
quot(x0, s(x1))
help(x0, s(x1), x2)
if(true, x0, s(x1), x2)
if(false, x0, s(x1), x2)
quot(x0, s(x1))
help(x0, s(x1), x2)
if(true, x0, s(x1), x2)
if(false, x0, s(x1), x2)
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ Rewriting
IF(true, x, s(y), c) → HELP(x, s(y), plus(c, s(y)))
HELP(x, s(y), c) → IF(lt(c, x), x, s(y), c)
plus(x, s(y)) → s(plus(x, y))
plus(x, 0) → x
lt(x, 0) → false
lt(0, s(y)) → true
lt(s(x), s(y)) → lt(x, y)
lt(x0, 0)
lt(0, s(x0))
lt(s(x0), s(x1))
plus(x0, 0)
plus(x0, s(x1))
IF(true, x, s(y), c) → HELP(x, s(y), s(plus(c, y)))
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ Rewriting
↳ QDP
↳ NonInfProof
IF(true, x, s(y), c) → HELP(x, s(y), s(plus(c, y)))
HELP(x, s(y), c) → IF(lt(c, x), x, s(y), c)
plus(x, s(y)) → s(plus(x, y))
plus(x, 0) → x
lt(x, 0) → false
lt(0, s(y)) → true
lt(s(x), s(y)) → lt(x, y)
lt(x0, 0)
lt(0, s(x0))
lt(s(x0), s(x1))
plus(x0, 0)
plus(x0, s(x1))
(1) (HELP(x3, s(x4), s(plus(x5, x4)))=HELP(x6, s(x7), x8) ⇒ HELP(x6, s(x7), x8)≥IF(lt(x8, x6), x6, s(x7), x8))
(2) (HELP(x3, s(x4), x8)≥IF(lt(x8, x3), x3, s(x4), x8))
(3) (IF(lt(x11, x9), x9, s(x10), x11)=IF(true, x12, s(x13), x14) ⇒ IF(true, x12, s(x13), x14)≥HELP(x12, s(x13), s(plus(x14, x13))))
(4) (lt(x11, x9)=true ⇒ IF(true, x9, s(x10), x11)≥HELP(x9, s(x10), s(plus(x11, x10))))
(5) (true=true ⇒ IF(true, s(x19), s(x10), 0)≥HELP(s(x19), s(x10), s(plus(0, x10))))
(6) (lt(x20, x21)=true∧(∀x22:lt(x20, x21)=true ⇒ IF(true, x21, s(x22), x20)≥HELP(x21, s(x22), s(plus(x20, x22)))) ⇒ IF(true, s(x21), s(x10), s(x20))≥HELP(s(x21), s(x10), s(plus(s(x20), x10))))
(7) (IF(true, s(x19), s(x10), 0)≥HELP(s(x19), s(x10), s(plus(0, x10))))
(8) (IF(true, x21, s(x10), x20)≥HELP(x21, s(x10), s(plus(x20, x10))) ⇒ IF(true, s(x21), s(x10), s(x20))≥HELP(s(x21), s(x10), s(plus(s(x20), x10))))
POL(0) = 0
POL(HELP(x1, x2, x3)) = -1 + x1 + x2 - x3
POL(IF(x1, x2, x3, x4)) = -1 - x1 + x2 + x3 - x4
POL(c) = -1
POL(false) = 0
POL(lt(x1, x2)) = 0
POL(plus(x1, x2)) = x1
POL(s(x1)) = 1 + x1
POL(true) = 0
The following pairs are in Pbound:
IF(true, x, s(y), c) → HELP(x, s(y), s(plus(c, y)))
The following rules are usable:
IF(true, x, s(y), c) → HELP(x, s(y), s(plus(c, y)))
false → lt(x, 0)
true → lt(0, s(y))
s(plus(x, y)) → plus(x, s(y))
x → plus(x, 0)
lt(x, y) → lt(s(x), s(y))
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ Rewriting
↳ QDP
↳ NonInfProof
↳ QDP
↳ DependencyGraphProof
HELP(x, s(y), c) → IF(lt(c, x), x, s(y), c)
plus(x, s(y)) → s(plus(x, y))
plus(x, 0) → x
lt(x, 0) → false
lt(0, s(y)) → true
lt(s(x), s(y)) → lt(x, y)
lt(x0, 0)
lt(0, s(x0))
lt(s(x0), s(x1))
plus(x0, 0)
plus(x0, s(x1))